Networks of computers implement a namespace to identify particular computers of the network. For example, in computer network implementing a Domain Name System (DNS) namespace, a particular computer may be identified by “myname.network.com” where the computer is located in a subdomain “myname” of a secondary domain “network” of a top level domain “com.” By uniquely identifying computers within a namespace, it is possible to find a particular computer of the network.
During write operations of data to computers in a network, the data may be written to any computer in the network. During a read operation for previously written data, the data can be found by first, identifying the computer where the data was originally written and second, obtaining the data from the identified computer. However, data may have moved from the first-identified computer or may have been deleted.
In some computer networks, if the data is not found at the identified computer during a read operation, then the result of the read operation is a message of “data not found.” In other computer networks, the data may have moved, so instead of ending the read operation, the third step is to visit another computer for the written data. The identifier of this new computer is listed in the first-identified computer that was visited to obtain the written data. Consequently, when data is constantly moved, a chain of identifiers is distributed throughout the computer network in order to find data. However, following the chain of identifiers is time consuming and is difficult to administer because administration requires the explicit management of the distributed identifiers along the chain. Specifically, any mistake in the chain of identifiers results in a broken chain.
For example, suppose three computers of a network include a chain of identifiers. Computer-A includes an identifier-B for computer-B and computer-B includes an identifier-C for computer-C. If identifier-C is corrupted and not updated by an administrator, then there is a broken link in the chain of identifiers. Consequently, a search for data stored on computer-C may start with a visit to computer-A, which leads to computer-B. However, since identifier-C is corrupted, computer-C is never identified correctly and the data stored on computer-C is never provided.
Accordingly, what is needed is a method and system to navigate a network of computers where data may be distributed in any fashion, without requiring difficult, time-consuming administration of identifiers.